一開頭老師直接帶入例子做說明。
const citrus = ["Lime", "Lemon", "Orange"];
const fruits = ["Apple", "Banana", "Coconut"];
假如我們想要把 citrus
array 直接加入 fruits
array 的後面,可以怎麼做?
一種做法是用 push
,另外一種是用 ES6 Spread Operator。
Spread Operator => ... + array 名稱:
const citrus = ["Lime", "Lemon", "Orange"];
const fruits = ["Apple", "Banana", "Coconut", ...citrus];
/*result:["Apple", "Banana", "Coconut", "Lime", "Lemon", "Orange"]
再來我們可以用在 object,以下 fullName 的內容加入 user 的方式如下:
const fullName = {
fName: "James",
lName: "Bond"
};
const user = {
...fullName,
id: 1,
username: "jamesbond007"
};
/*{fName: "James", lName: "Bond", id: 1, username: "jamesbond007"}
昨天有用到的 useState 內容([Day 69] [React] 改變不同部分組成的狀態 (Complex State) - 練習),也可以藉由 Spread Operator 改寫。
原本的 if else 判斷:
setContact(prevValue => {
if (name === "fName") {
return {
fName: value,
lName: prevValue.lName,
email: prevValue.email
};
} else if (name === "lName") {
return {
fName: prevValue.fName,
lName: value,
email: prevValue.email
};
} else if (name === "email") {
return {
fName: prevValue.fName,
lName: prevValue.lName,
email: value
};
}
});
改寫後:
setContact(prevValue => {
return {
...prevValue,
[name]: value
};
});
這邊我有很多的問題,不過課程實在講得太淺了。
所以稍微 google 搜尋到了第一篇文章,對我來說解釋得很清楚,也有很多範例,貼在這邊也當作筆記:
Day 09: ES6篇: Spread Operator & Rest Operator(展開與其餘運算符)